//
//  MaxHeap.hpp
//  CppDemo
//
//  Created by 蒋益杰 on 2017/6/7.
//  Copyright © 2017年 com.ed. All rights reserved.
//

#ifndef MaxHeap_hpp
#define MaxHeap_hpp

#include <iostream>
#include <vector>


class MaxHeap {
private:
    std::vector<int> heap;
    
public:
    
    void insert(int x);
    void sift_up();         //用于插入元素
    int get_max();         //返回最大值但不移除元素
    int get_size();      //返回存储的元素数量
    bool is_empty();      // 若堆为空则返回 true
    int extract_max();     // 返回最大值并移除
    void sift_down();       // 用于获取最大值元素
    void remove(int i);       // 删除指定索引的元素
    void heapify();         // 构建堆，用于堆排序， 维护
    void heap_sort();     // 拿到一个未排序的数组，然后使用大顶堆进行就地排序
    
    void display();
};

#endif /* MaxHeap_hpp */
